package com.education.ai.dao;

import com.education.ai.entity.TeachingResource;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 教学资源数据访问接口
 */
public interface TeachingResourceDao {

    /**
     * 查询所有教学资源
     */
    List<TeachingResource> findAll();
    
    /**
     * 根据ID查询教学资源
     */
    Optional<TeachingResource> findById(Long id);
    
    /**
     * 根据资源类型查询资源
     */
    List<TeachingResource> findByType(String type);
    
    /**
     * 根据学科查询资源
     */
    List<TeachingResource> findBySubject(String subject);
    
    /**
     * 根据学科和年级查询资源
     */
    List<TeachingResource> findBySubjectAndGrade(String subject, String grade);
    
    /**
     * 根据标题模糊查询资源
     */
    List<TeachingResource> findByTitleContaining(String titlePart);
    
    /**
     * 根据知识点查询资源
     */
    List<TeachingResource> findByKnowledgePoint(String knowledgePoint);
    
    /**
     * 根据标签查询资源
     */
    List<TeachingResource> findByTag(String tag);
    
    /**
     * 查询使用次数最多的资源
     * @param limit 限制返回的记录数
     */
    List<TeachingResource> findTopByUsageCount(int limit);
    
    /**
     * 查询评分最高的资源
     * @param limit 限制返回的记录数
     */
    List<TeachingResource> findTopByRating(int limit);
    
    /**
     * 保存教学资源
     */
    TeachingResource save(TeachingResource resource);
    
    /**
     * 更新教学资源
     */
    boolean update(TeachingResource resource);
    
    /**
     * 删除教学资源
     */
    boolean deleteById(Long id);
    
    /**
     * 增加资源使用次数
     */
    boolean incrementUsageCount(Long id);
    
    /**
     * 更新资源评分
     */
    boolean updateRating(Long id, Float rating);
    
    /**
     * 查询教学资源总数
     */
    long count();
} 